iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0

今天提到的是 side effect,就像之前提到的,

side effect 通常出現在以下幾種情況

state manipulation,
interacting with the I/O
database
log system
APIs

提到 side effect 未必是不好的,譬如 setTimeOut 的使用等....

但是如果是對於一些會影響開發流程,會造成狀態、資料混亂的 side effect 則要避免,
那要避免 side effect 除了盡量避免在 function 內直接更改共享狀態,
而維持資料的 immuable,還有一個方式,就是我們之前提到的 pure function 維持
function 的 Idempotency 冪等性。

Idempotency 冪等性

我們先來看看幕等性的定義,

在編程中,一個冪等操作的特點是其任意多次執行所產生的影響都和一次執行的影響相同
function programming 中的 pure function
function 在數學意義上是冪等的

   //  非冪等
   const notIdempotency = (num) => {
      return Math.random(num);
   }
   
   // 冪等
   const idempotentency = (num) => {
   console.log(num);
   }
   notIdempotency(3); // 雖機數字
   idempotentency(3); // 每次輸入都是 3 
 

上一篇
day20: immuable
下一篇
day22: declarative vs. imperative
系列文
寫出好維護又簡潔的 react 程式碼 feat: Function Programming30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言